package tec;

abstract class PassagerAbstrait implements Passager, Usager
{
   private String nom ;
   private final int DESTINATION ;
   private EtatPassager etat ;

   protected PassagerAbstrait(String nom, int destination)
   {
      this.nom = nom ;
      DESTINATION = destination ;
      etat=EtatPassager.dehors;
   }
  
   public int getDestination(){
      return DESTINATION;
   }

   public void accepterPlaceAssise()
    {
	etat=EtatPassager.assis;
    }
    
    public void accepterPlaceDebout()
    {
	etat=EtatPassager.debout;
    }
    
    public void accepterSortie()
    {
	etat= EtatPassager.dehors;
    }
    
    public boolean estAssis()
    {
	return etat.estAssis() ;
    }
    
    public boolean estDebout()
    {
	return etat.estDebout() ;
    }
    
    public boolean estDehors()
    {
	return !estAssis() && !estDebout() ;
    }
    
    public void monterDans(Transport t){
		Bus b = (Bus) t;
		choixPlaceMontee(b);
	}

    public String nom()
    {
	return nom;
    }
	
	abstract void choixPlaceMontee(Bus b);

	abstract void choixChangerPlace(Bus b, int destination);
	
    public void nouvelArret(Bus t, int numeroArret){
    if(getDestination() == numeroArret){
    	t.demanderSortie(this);
        }
	else{
		choixChangerPlace(t,numeroArret);
		}
    }
 
    public String toString()
    {
	return (nom + " " + etat).toLowerCase();
    }	
}	
